Type Predicates
from TypeScriptのTypeGuard
User-Defined Type Guards_
x is T
type Predicatesも推論される
TypeScript v5.5で入った ref
わざわざx is Tのように書かなくても良い
code:ts
// const isNumber: (x: unknown) => x is number
const isNumber = (x: unknown) => typeof x === 'number';
// const isNonNullish: <T>(x: T) => x is NonNullable<T>
const isNonNullish = <T,>(x: T) => x != null;
推論される条件
その関数の返り値の型を明示的に指定していない
関数内のreturnは1つである
その関数は引数の上書きをしない
その関数は、引数の絞り込みに関連したbooleanを返している
↑この条件だと、もうほぼx is Tと書く機会はなくなりそうだなmrsekut.icon
#WIP
isを使って自作TypeGuradなるものを作る
返り値の型はbooleanを定義する
isは実装によらず、その型になるので注意
例
code:ts
export const notEmpty = <Value>(
value: Value | null | undefined,
): value is Value => value != null;
https://kgtkr.net/blog/2019/07/16/use-type-predicate-safely-with-typescript
安全に